package org.crmsystem.dao;

import org.crmsystem.model.Permission;
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.Map;

/**
 * 权限dao层接口
 *
 * @author 孙艳平
 */
@Repository
public interface PermissionMapper {
    /**
     * 根据权限Id,获取权限详细信息
     * @param id
     * @return
     */
    Permission getPermissionById(int id);

    /**
     * 多条件查询获得权限表
     * @param permission
     * @return
     */
    List<Permission> getPermission(Permission permission);

    /**
     * 添加权限
     * @param permission
     * @return
     */
    int addPermission(Permission permission);

    /**
     * 删除权限
     * @param id
     * @return
     */
    int delPermission(int id);

    /**
     * 编辑权限信息
     * @param permission
     * @return
     */
    int updatePermission(Permission permission);
    /**
     * 根据角色id查询角色已获得的权限
     * @param roleId
     * @return
     */
    List<Permission> getPermissionByRoleId(int roleId);
    /**
     * 根据角色Id查询该角色还没有获得的权限
     * @param roleId
     * @return
     */
    List<Permission> getPermissionByRoleIdNo(int roleId);
    /**
     * 查询指定角色有没有指定权限
     * @param map
     * @return
     */
    int getPermissionHave(Map map);
    /**
     * 给指定角色授予权限
     * @param map
     * @return
     */
    int addRolePermission(Map map);
    /**
     * 恢复某个角色的某个权限
     * @param map
     * @return
     */
    int updateRolePermission(Map map);
    /**
     * 删除某个角色的某个权限
     * @param map
     * @return
     */
    int deleteRolePermission(Map map);
    /**
     * 删除某个权限时更新所有的角色的该权限
     * @param permissionId
     * @return
     */
    int updateAllRolePermission(int permissionId);
}
